//package cn.wu.jishupeizhi.util;
//
//import io.jsonwebtoken.Claims;
//import io.jsonwebtoken.JwsHeader;
//import io.jsonwebtoken.Jwts;
//import io.jsonwebtoken.SignatureAlgorithm;
//
//import java.nio.charset.StandardCharsets;
//import java.security.SecureRandom;
//import java.util.Calendar;
//import java.util.HashMap;
//import java.util.Map;
//
//
//public class JwtT {
//
//    public void generateToken() {
//        // JWT头部分信息【Header】
//        Map<String, Object> header = new HashMap<>();
//        header.put("alg", "HS256");
//        header.put("typ", "JWT");
//
//        // 载核【Payload】
//        Map<String, Object> payload = new HashMap<>();
//        payload.put("sub", "1234567890");
//
//        // 声明Token失效时间 (redis,实现token失效)
//        Calendar instance = Calendar.getInstance();
//        instance.add(Calendar.SECOND,30);// 300s
//
//        // 生成Token
//        String token = Jwts.builder()
//                .setHeader(header)// 设置Header
//                .setClaims(payload) // 设置载核
//                .setExpiration(instance.getTime())// 设置生效时间
//                .signWith(SignatureAlgorithm.HS256,"0016254faeec52129bedf583c61c746424ca6772eb32df2c245a0e6b64b03378") // 签名,这里采用私钥进行签名,不要泄露了自己的私钥信息
//                .compact(); // 压缩生成xxx.xxx.xxx
//        System.out.println("加密："+token);
//        getInfoByJwt(token);
//    }
//
//    public void getInfoByJwt(String token) {
//        // 生成的token
//        // 解析head信息
//        System.out.println("解密：");
//        JwsHeader jwsHeader = Jwts
//                .parser()
//                .setSigningKey("0016254faeec52129bedf583c61c746424ca6772eb32df2c245a0e6b64b03378")
//                .parseClaimsJws(token)
//                .getHeader();
//
//        System.out.println(jwsHeader); // {typ=JWT, alg=HS256}
//        System.out.println("typ:"+jwsHeader.get("typ"));
//
//        // 解析Payload
//        Claims claims =    Jwts
//                .parser()
//                .setSigningKey("0016254faeec52129bedf583c61c746424ca6772eb32df2c245a0e6b64b03378")
//                .parseClaimsJws(token)
//                .getBody();
//        System.out.println(claims);// {sub=1234567890, name=John Doe, admin=true, exp=1663297431}
//        System.out.println("admin:"+claims.get("admin"));
//
//        // 解析Signature
//        String signature =    Jwts
//                .parser()
//                .setSigningKey("0016254faeec52129bedf583c61c746424ca6772eb32df2c245a0e6b64b03378")
//                .parseClaimsJws(token)
//                .getSignature();
//        System.out.println(signature); // Ju5EzKBpUnuIRhDG1SU0NwMGsd9Jl_8YBcMM6PB2C20
//    }
//
//    public static void main(String[] args) {
//        JwtT jwtT = new JwtT();
//        jwtT.generateToken();
//
//    }
//
//
//}
